package acwing.高精度;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @description:
 * @author: qian
 * @createDate: 2021/11/4
 */
public class BigSub {

    /**
     * 减法分两种情况
     * a >= b 直接 a - b
     * a < b  -(b - a)
     * 这样做的好处就是一定是大的减小的 就不会出现大的数的最高位再往前借位
     */
    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);
        String A = s.next(); // 数字1
        String B = s.next(); // 数值2
        List<Integer> l1 = new ArrayList<>();
        List<Integer> l2 = new ArrayList<>();
        char[] a = A.toCharArray();
        char[] b = B.toCharArray();

        for (int i = a.length - 1; i >= 0; i--) l1.add(a[i] - '0'); // [5,4,3,2,1]
        for (int i = b.length - 1; i >= 0; i--) l2.add(b[i] - '0');
        if (cmp(l1, l2)) {
            // 打印 a+b
            List<Integer> c = sub(l1,l2);
            for (int i = c.size() - 1; i >= 0; i--) System.out.print(c.get(i));
        } else {
            List<Integer> c = sub(l2,l1);
            System.out.println("-");
            for (int i = c.size() - 1; i >= 0; i--) System.out.print(c.get(i));
        }



    }

    // 判断 l1 是否 >= l2
    private static boolean cmp(List<Integer> l1, List<Integer> l2) {
        if (l1.size() != l2.size()) return l1.size() > l2.size();
        for (int i = l1.size() - 1; i >= 0; i--) {
            if (l1.get(i) != l2.get(i))
                return l1.get(i) > l2.get(i);
        }
        return true;
    }

    //c = l1 - l2
    private static List<Integer> sub(List<Integer> l1, List<Integer> l2) {

        List<Integer> c = new ArrayList<>();
        int t = 0;
        for (int i = 0; i < l1.size(); i++) {
            t = l1.get(i) - t;
            // 这里减完 t就有两种情况
            // t >= 0 t不用借位
            // t < 0  t = t + 10 要借一位
            // l2 的位数可能要比 l1 少
            if (i < l2.size()) t -= l2.get(i);

            if (t >= 0) c.add(t);
            else c.add(t + 10);
            // c.add((t + 10) % 10); == 上面两行

            // 判断需不需要借位
            if (t < 0) t = 1;
            else t = 0;
        }
        // 123 - 121 = 002 把多余的0处理
        // 123 - 123 = 0  c.size() > 1 就是为了不让它全删了
        while (c.size() > 1 && c.get(c.size() - 1) == 0) c.remove(c.size() - 1);
        return c;
    }
}
